%% 假设指挥部的坐标是(0, 0)
global S % 观测点坐标Ns*2，最上面补一个指挥部的坐标(0,0)
global Ns % 观测点数目
global vmax % 最大速度
global Tmax % 最大时
global dmax % 最大距离间

Ns=5;
[x,y]=pol2cart(rand(Ns,1)*2*pi,rand(Ns,1)*15);
S=[[0,0];cat(2,x,y)];
vmax=20*3.6;
Tmax=2.5;
dmax=30;
% x0=zeros(Ns,Ns+2);
% x0=[zeros(Ns,1),(1:Ns).',zeros(Ns,Ns)]; % 矩阵初始值，里面存的是索引，测试时可以把这个地方进行修改，看看函数的输出是否符合预期

%% test
fun=@(x) target(x);
nlcon=@(x) constrains(x);
nlrhs=[0;0;0;0];
nle=zeros(4,1);
lb=zeros(Ns,Ns+2);
ub=repmat(Ns,Ns,Ns+2);
xtype=repmat('I',Ns,Ns+2);
x0=[zeros(Ns,1),(1:Ns).',zeros(Ns,Ns)]; 
x0=x0(:);
lb=lb(:);
ub=ub(:);
xtype=xtype(:);

%%
opts = optiset('solver','gmatlab','display','iter','maxiter',1e8,'maxfeval',1e8,'maxtime',1e8,'maxnodes',1e8);
Opt = opti('fun',fun,'nl',nlcon,nlrhs-1,nlrhs,'bounds',lb,ub,'xtype',xtype,'options',opts)
